package com.shiroInI;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.env.BasicIniEnvironment;
import org.apache.shiro.env.Environment;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;

public class iTestIniLoginAuthc {
    public static void main(String[] args) {
        //读取配置文件
        Environment environment = new BasicIniEnvironment("classpath:shiroConfig/shiro-perm.ini");
        //2. 通过环境，生成默认的对象
        SecurityManager securityManager = environment.getSecurityManager();
        //3. shiro的工具类，需要一个SecurityManager的环境
        SecurityUtils.setSecurityManager(securityManager);

        //--------------------------------上面的代码不用记，通过配置i文件搞定

        //4. 有环境的工具包，将获取到一个subject对象，然后就可以使用subject对象来进行业务开发
        Subject subject = SecurityUtils.getSubject();
        //有了主体用户后，可以直接执行Login
        subject.login(new UsernamePasswordToken("AKUMA","111111"));
        //此处，subject主体执行Login操作，顶v嗯会自动帮我去ini配置文件中匹配，能匹配上，登陆成功
        System.out.println("当前:"+subject.getPrincipal()+"的登陆状态:"+subject.isAuthenticated());

        if(subject.isAuthenticated()){
            //如果登陆成功，则执行下面的逻辑代码
            if (subject.hasRole("boss")){
                System.out.println("当前的"+subject.getPrincipal()+"：用户能干boss的事");
            }
        }
        //判断是否有吃人权限
        if(subject.isPermitted("eat:person")){
            System.out.println("当前用户"+subject.getPrincipal()+"有eat权限");
        }else {
            System.out.println("单词写错了");
        }
    }
}
